Ссылка на практикум

In [1]:
from IPython.display import Image
import os, sys
import __main__
__main__.pymol_argv = [ 'pymol', '-cp' ]
import pymol
pymol.finish_launching()
from pymol import cmd
from IPython.display import Image
In [6]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

Информация о моделировании:
* Силовое поле используемое при построении: amber99sb * Заряд системы: 0 (-10+10) * Размер и форму ячейки: прямоугольник 5.092 4.906 5.462 (nm) * Минимизация энергии: - Алгоритм минимизации энергии: l-bfgs (steepest descent algoritm) - Алгоритм расчёта электростатики и Ван-дер-Ваальсовых взаимодействий: * Модель, которой описывался растворитель: * Утряска растворителя: - Параметр который обуславливает неподвижность биополимера: - Число шагов: 1000 - Длина шага: 0.0002 ps - Алгоритм расчёта электростатики и Ван-дер-Ваальсовых взаимодействий: - Алгоритм термостата: V-rescale - Алгоритм баростата: Berendsen * Основной расчёт МД - Время моделирования: 10 ns - Количество процессоров: 1 (?) - Эффективность масштабирования: - Длина траектории: - Число шагов: 5000000 - Длина шага: 0.002 ps - Алгоритм интегратора: md - Алгоритмы расчёта электростатики и Ван-дер-Ваальсовых взаимодействий: pme и Cut-off - Алгоритм термостата: V-rescale - Алгоритм баростата: Berendsen

Визуальный анализ движений молекул (из консоли, выбирая группу №1):

In []:
%%bash
trjconv -f dna_md.xtc -s dna_md.tpr -o dna_pbc_1.pdb -skip 20 -pbc mol
In []:
%%bash
# с центрированием
trjconv -f dna_md.xtc -s dna_md.tpr -o dna_fit_2.pdb -skip 20 -fit rot+trans
In [1]:
%%bash
pymol dna_pbc_1.pdb
 PyMOL(TM) Molecular Graphics System, Version 1.5.0.1.
 Copyright (c) Schrodinger, LLC.
 All Rights Reserved.
 
    Created by Warren L. DeLano, Ph.D. 
 
    PyMOL is user-supported open-source software.  Although some versions
    are freely available, PyMOL is not in the public domain.
 
    If PyMOL is helpful in your work or study, then please volunteer 
    support for our ongoing efforts to create open and affordable scientific
    software by purchasing a PyMOL Maintenance and/or Support subscription.

    More information can be found at "http://www.pymol.org".
 
    Enter "help" for a list of commands.
    Enter "help <command-name>" for information on a specific command.

 Hit ESC anytime to toggle between text and graphics.

 Detected OpenGL version 2.0 or greater. Shaders available.
 Detected GLSL version 1.20.
 OpenGL graphics engine:
  GL_VENDOR: Mesa Project
  GL_RENDERER: Software Rasterizer
  GL_VERSION: 2.1 Mesa 7.11.2
 Detected 8 CPU cores.  Enabled multithreaded rendering.
TITLE     Protein in water t=   0.00000
TITLE     Protein in water t= 200.00000
TITLE     Protein in water t= 400.00000
TITLE     Protein in water t= 600.00000
TITLE     Protein in water t= 800.00000
TITLE     Protein in water t= 1000.00000
TITLE     Protein in water t= 1200.00000
TITLE     Protein in water t= 1400.00000
TITLE     Protein in water t= 1600.00000
TITLE     Protein in water t= 1800.00000
TITLE     Protein in water t= 2000.00000
TITLE     Protein in water t= 2200.00000
TITLE     Protein in water t= 2400.00000
TITLE     Protein in water t= 2600.00000
TITLE     Protein in water t= 2800.00000
TITLE     Protein in water t= 3000.00000
TITLE     Protein in water t= 3200.00000
TITLE     Protein in water t= 3400.00000
TITLE     Protein in water t= 3600.00000
TITLE     Protein in water t= 3800.00000
TITLE     Protein in water t= 4000.00000
TITLE     Protein in water t= 4200.00000
TITLE     Protein in water t= 4400.00000
TITLE     Protein in water t= 4600.00000
TITLE     Protein in water t= 4800.00000
TITLE     Protein in water t= 5000.00000
TITLE     Protein in water t= 5200.00000
TITLE     Protein in water t= 5400.00000
TITLE     Protein in water t= 5600.00000
TITLE     Protein in water t= 5800.00000
TITLE     Protein in water t= 6000.00000
TITLE     Protein in water t= 6200.00000
TITLE     Protein in water t= 6400.00000
TITLE     Protein in water t= 6600.00000
TITLE     Protein in water t= 6800.00000
TITLE     Protein in water t= 7000.00000
TITLE     Protein in water t= 7200.00000
TITLE     Protein in water t= 7400.00000
TITLE     Protein in water t= 7600.00000
TITLE     Protein in water t= 7800.00000
TITLE     Protein in water t= 8000.00000
TITLE     Protein in water t= 8200.00000
TITLE     Protein in water t= 8400.00000
TITLE     Protein in water t= 8600.00000
TITLE     Protein in water t= 8800.00000
TITLE     Protein in water t= 9000.00000
TITLE     Protein in water t= 9200.00000
TITLE     Protein in water t= 9400.00000
TITLE     Protein in water t= 9600.00000
TITLE     Protein in water t= 9800.00000
TITLE     Protein in water t= 10000.00000
 ObjectMolecule: Read crystal symmetry information.
 Symmetry: Found 1 symmetry operators.
 ObjectMolReadPDBStr: read MODEL 1
 ObjectMolReadPDBStr: read MODEL 2
 ObjectMolReadPDBStr: read MODEL 3
 ObjectMolReadPDBStr: read MODEL 4
 ObjectMolReadPDBStr: read MODEL 5
 ObjectMolReadPDBStr: read MODEL 6
 ObjectMolReadPDBStr: read MODEL 7
 ObjectMolReadPDBStr: read MODEL 8
 ObjectMolReadPDBStr: read MODEL 9
 ObjectMolReadPDBStr: read MODEL 10
 ObjectMolReadPDBStr: read MODEL 11
 ObjectMolReadPDBStr: read MODEL 12
 ObjectMolReadPDBStr: read MODEL 13
 ObjectMolReadPDBStr: read MODEL 14
 ObjectMolReadPDBStr: read MODEL 15
 ObjectMolReadPDBStr: read MODEL 16
 ObjectMolReadPDBStr: read MODEL 17
 ObjectMolReadPDBStr: read MODEL 18
 ObjectMolReadPDBStr: read MODEL 19
 ObjectMolReadPDBStr: read MODEL 20
 ObjectMolReadPDBStr: read MODEL 21
 ObjectMolReadPDBStr: read MODEL 22
 ObjectMolReadPDBStr: read MODEL 23
 ObjectMolReadPDBStr: read MODEL 24
 ObjectMolReadPDBStr: read MODEL 25
 ObjectMolReadPDBStr: read MODEL 26
 ObjectMolReadPDBStr: read MODEL 27
 ObjectMolReadPDBStr: read MODEL 28
 ObjectMolReadPDBStr: read MODEL 29
 ObjectMolReadPDBStr: read MODEL 30
 ObjectMolReadPDBStr: read MODEL 31
 ObjectMolReadPDBStr: read MODEL 32
 ObjectMolReadPDBStr: read MODEL 33
 ObjectMolReadPDBStr: read MODEL 34
 ObjectMolReadPDBStr: read MODEL 35
 ObjectMolReadPDBStr: read MODEL 36
 ObjectMolReadPDBStr: read MODEL 37
 ObjectMolReadPDBStr: read MODEL 38
 ObjectMolReadPDBStr: read MODEL 39
 ObjectMolReadPDBStr: read MODEL 40
 ObjectMolReadPDBStr: read MODEL 41
 ObjectMolReadPDBStr: read MODEL 42
 ObjectMolReadPDBStr: read MODEL 43
 ObjectMolReadPDBStr: read MODEL 44
 ObjectMolReadPDBStr: read MODEL 45
 ObjectMolReadPDBStr: read MODEL 46
 ObjectMolReadPDBStr: read MODEL 47
 ObjectMolReadPDBStr: read MODEL 48
 ObjectMolReadPDBStr: read MODEL 49
 ObjectMolReadPDBStr: read MODEL 50
 ObjectMolReadPDBStr: read MODEL 51
 CmdLoad: "dna_pbc_1.pdb" loaded as "dna_pbc_1".
 PyMOL: abrupt program termination.

libGL error: failed to open drm device: No such file or directory
libGL error: failed to load driver: i965

Кадр №1:

In [5]:
Image(filename="A-form.png")
Out[5]:

Кадр №51 (последний):

In [4]:
Image(filename="B-form.png")
Out[4]:

Сложно сказать, когда происходит переход форм ДНК, но скорее всего это просходит между кадрами 36-37.

Определение средне-квадратичное отколнение в ходе моделирования

Сначала расчитаем отклонение в ходе всей симуляции относительно стартовой структуры:

In []:
%%bash
g_rms -f dna_md.xtc -s dna_md.tpr -o rms_1
In [10]:
%%bash
sed -i 's/@/#/' rms_1.xvg
In [14]:
a = np.loadtxt("rms_1.xvg",comments='#')
x = a[:,0]
y = a[:,1]
#plt.rcParams["figure.figsize"] = [15,8]

plt.scatter(x, y)
plt.title('RMSD')
plt.suptitle('DNA after lsq fit to DNA')
plt.xlabel('Time (ps)')
plt.ylabel('RMSD (nm)')

plt.show()

Резкие скачки RMSD скорее всего соответствуют случаям, когда цепи ДНК разлетаются друг от друга (в разные ячейки).

В диапазоне 4000-6000 ps скорее всего произошёл переход ДНК из А в В форму, т.к. после разрыва (в базовой линии) базальный уровень колебаний (RMSD) стал немного больше, чем был, что может говорить о том, что цепи ДНК немного разошлись и получили большую свободу для колебаний.

Теперь - относительно каждой предыдущей структуры на растоянии 400 кадров:

In []:
%%bash
g_rms -f dna_md.xtc -s dna_md.tpr -o rms_2 -prev 400
In [13]:
%%bash
sed -i 's/@/#/' rms_2.xvg
In [15]:
a = np.loadtxt("rms_2.xvg",comments='#')
x = a[:,0]
y = a[:,1]

plt.scatter(x, y)
plt.title('RMSD')
plt.suptitle('RMSD with frame 4000 Time (ps) ago')
plt.xlabel('Time (ps)')
plt.ylabel('RMSD (nm)')

plt.show()

Анализ поверхности

Определим изменение гидрофобной и гидрофильной поверхности в ходе конформационного перехода:

In []:
%%bash
g_sas -f dna_md.xtc -s dna_md.tpr -o sas_dna.xvg
In [16]:
%%bash
sed -i 's/@/#/' sas_dna.xvg
In [37]:
a = np.loadtxt("sas_dna.xvg",comments='#')
x = a[:,0]
y1 = a[:,1]
y2 = a[:,2]
y3 = a[:,3]
y4 = a[:,4]

plt.scatter(x, y1, c='yellow')
plt.scatter(x, y2, c='blue')
#plt.scatter(x, y3, c='red') #Total
#plt.scatter(x, y4, c='grey') #D Gsolv
plt.legend(['Hydrophobic', "Hydrophilic"], loc=7)
plt.title("Solvent Accessible Surface")
plt.xlabel('Time (ps)')
plt.ylabel('Area (nm\S2\N)')

plt.show()

Видно, что к концу моделирования площадь гидрофобной поверхности немного уменьшилась. Резких скачков не происходило. Возможно, это способствовало переходу ДНК из А-формы в В-форму.

Анализ водородных связей

Исследуем связи между ДНК и ДНК, то есть водородные связи между цепями ДНК:

In []:
%%bash
g_hbond  -f dna_md.xtc -s dna_md.tpr -num hbond_dna
In [38]:
%%bash
sed -i 's/@/#/' hbond_dna.xvg
In [65]:
a = np.loadtxt("hbond_dna.xvg",comments='#')
x = a[:,0]
y1 = a[:,1]
y2 = a[:,2]

plt.scatter(x, y1, c='blue')
plt.scatter(x, y2, c='magenta')
z = np.polyfit(x, y2, 1)
p = np.poly1d(z)
plt.plot(x,p(x),'r-', linewidth=2)

plt.legend(['Trendline', 'Hydrogen bonds', "Pairs within 0.35 nm"], bbox_to_anchor = (1.6, 1))
plt.title("Hydrogen Bonds")
plt.xlabel('Time (ps)')
plt.ylabel('Number')

plt.show()

Интересно, что количество водородных связей между цепями ДНК уменьшилось. К тому же, это произошло из-за того, что увеличилось расстояние между атомами (trendline). Следовательно, цепи ДНК как бы раздвинулись, чтобы увеличить количество взаимодействий с окружающей водой (см. ниже). На самом деле, этого следовало ожидать, т.к. А-форма ДНК преобладает в сухой ДНК (и в РНК), а в окружении воды ДНК переходит в В-форму.

Изучим количество водородных связей ДНК-Вода:

In []:
%%bash
g_hbond  -f dna_md.xtc -s dna_md.tpr -num hbond_dna_sol
In [66]:
%%bash
sed -i 's/@/#/' hbond_dna_sol.xvg
In [69]:
a = np.loadtxt("hbond_dna_sol.xvg",comments='#')
x = a[:,0]
y1 = a[:,1]
y2 = a[:,2]

plt.scatter(x, y1, c='blue')
plt.scatter(x, y2, c='magenta')
z = np.polyfit(x, y1, 1)
p = np.poly1d(z)
plt.plot(x,p(x),'r-', linewidth=2)

plt.legend(['Trendline', 'Hydrogen bonds', "Pairs within 0.35 nm"], bbox_to_anchor = (1.6, 1))
plt.title("Hydrogen Bonds")
plt.xlabel('Time (ps)')
plt.ylabel('Number')

plt.show()

Предположение, сделанное выше, действительно подтвердилось.